A scheduler is a software component that finds optimal assignments of resource consumer requests to available resources. The available resources are typically divided into sets of resource buckets which may represent, e.g., host computers, data stores, networks, etc. The purpose of the scheduler is then to match the needs of a resource consumer to a specific resource bucket. For example, the consumer may obtain a placement of a virtual computing instance (e.g., a virtual machine or container) on a specific host computer, and the virtual computing instance may then be created on that host computer.
In scheduler and other services, it may be necessary to gather information from each of a number of host computers. For example, a scheduler service may need to know the available resources on multiple host computers. One approach to obtain such information from multiple host computers is for a single process or machine to query each host computer for the required information. However, this approach does not scale well as the number of hosts increases in, e.g., a cloud.